package com.kuangjia.boss.config;/**
 * Created by Intellij IDEA.
 * User:  nuyang
 * Date:  2023/12/8
 */
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.TimeUnit;

/**
 *
 * @description
 * @date 2021/5/17 14:57
 */
@Slf4j
@Configuration
public class CacheConfig {

    //暂定30分钟过期
    long cacheToolData = 30;

    //过期时间
    long accessToken  = 1;

    @Bean
    public Cache<String, Object> cacheToolData() {
        return Caffeine.newBuilder()
                // 设置最后一次写入后经过固定时间过期
                .expireAfterWrite(cacheToolData, TimeUnit.MINUTES)
                .removalListener((key,value,cause)->{
                    log.info("标签淘汰通知>>>>>>>>>键："+key+";值:"+value+";原因："+cause);
                })
                // 初始的缓存空间大小
                .initialCapacity(15000)
                // 缓存的最大条数
                .maximumSize(15000)
                .build();
    }

    @Bean
    public Cache<String, Object> accessToken() {
        return Caffeine.newBuilder()
                // 设置最后一次写入后经过固定时间过期
                .expireAfterWrite(accessToken, TimeUnit.MINUTES)
                .removalListener((key,value,cause)->{
                    log.info("淘汰通知，键："+key+";值:"+value+";原因："+cause);
                })
                .build();
    }

}
